﻿Imports DAL
Public Class buBusinessUnits


    ''' <summary>
    ''' Trả về toàn bộ record trong bảng RockwellAutomationBUs
    ''' </summary>
    Public Function RetrieveListOfBusinessUnits() As List(Of RockwellAutomationBU)

        'FUNC: Truy vấn TẤT CẢ record của bảng - Sử dụng DbContext
        Using dbEntities As New PrestozEntities

            Dim businessUnits As List(Of RockwellAutomationBU) = dbEntities.RockwellAutomationBUs.ToList()

            Return businessUnits

        End Using

    End Function


    ''' <summary>
    ''' Trả về DataTable chứa toàn bộ record của bảng RockwellAutomationBUs
    ''' </summary>
    Public Function DataTableOfBusinessUnits() As DataTable

        'FUNC: Thao tác dữ liệu để trả về DataTable ngay trong BI-Tier
        'Khai báo một DataTable để chứa dữ liệu
        Dim dtSource As New DataTable("BUs")

        'Khai báo một biến đối tượng DataColumn
        Dim dcBusinessUnit As New DataColumn("PF", GetType(String))
        dcBusinessUnit.MaxLength = 10

        'Thêm cột PF vào DataTable
        dcBusinessUnit.Caption = "Mã PF"
        dtSource.Columns.Add(dcBusinessUnit)

        'Thêm cột SubBU
        dcBusinessUnit = New DataColumn("SubBU", GetType(String))
        dcBusinessUnit.MaxLength = 10
        dcBusinessUnit.Caption = "Sub BU"
        dtSource.Columns.Add(dcBusinessUnit)

        'Thêm cột Name
        dcBusinessUnit = New DataColumn("Name", GetType(String))
        dcBusinessUnit.MaxLength = 1024
        dcBusinessUnit.Caption = "Phân lớp"
        dtSource.Columns.Add(dcBusinessUnit)

        'Thêm cột BU
        dcBusinessUnit = New DataColumn("BU", GetType(String))
        dcBusinessUnit.MaxLength = 10
        dcBusinessUnit.Caption = "Lớp"
        dtSource.Columns.Add(dcBusinessUnit)

        'Thêm cột Note
        dcBusinessUnit = New DataColumn("Note", GetType(String))
        dcBusinessUnit.Caption = "Ghi chú"
        dtSource.Columns.Add(dcBusinessUnit)

        'Khai báo một biến đối tượng DataRow
        Dim drBusinessUnit As DataRow

        Dim listOfBUs As List(Of RockwellAutomationBU) = RetrieveListOfBusinessUnits()

        For Each oBU As RockwellAutomationBU In listOfBUs
            drBusinessUnit = dtSource.NewRow()
            drBusinessUnit("PF") = oBU.PF
            drBusinessUnit("SubBU") = oBU.SubBU
            drBusinessUnit("Name") = oBU.Name
            drBusinessUnit("BU") = oBU.BU

            If Not String.IsNullOrWhiteSpace(oBU.Note) Then
                drBusinessUnit("Note") = oBU.Note
            Else
                drBusinessUnit("Note") = String.Empty
            End If

            dtSource.Rows.Add(drBusinessUnit)
        Next

        Return dtSource

    End Function


    ''' <summary>
    ''' Truy vấn thông tin về PF 
    ''' </summary>
    ''' <param name="sPF">Mã PF cần truy vấn</param>
    Public Function RetrieveInfoOfPF(ByVal sPF As String) As RockwellAutomationBU
        Using dbEntities As New PrestozEntities

            Return (From c In dbEntities.RockwellAutomationBUs
                    Where c.PF = sPF
                    Select c).FirstOrDefault()

        End Using
    End Function


    ''' <summary>
    ''' Cập nhật record Business Unit
    ''' </summary>
    ''' <param name="oBU">Dữ liệu cần cập nhật</param>
    Public Function UpdateBusinessUnit(ByVal oBU As RockwellAutomationBU) As Boolean

        Using dbEntities As New PrestozEntities

            Dim sPF As String = oBU.PF
            Dim oRetrieveBU As New RockwellAutomationBU
            oRetrieveBU = dbEntities.RockwellAutomationBUs.FirstOrDefault(Function(c) c.PF = sPF)

            Try

                oRetrieveBU.SubBU = oBU.SubBU
                oRetrieveBU.Name = oBU.Name
                oRetrieveBU.BU = oBU.BU

                If Not String.IsNullOrWhiteSpace(oBU.Note) Then
                    oRetrieveBU.Note = oBU.Note
                Else
                    oRetrieveBU.Note = String.Empty
                End If

                oRetrieveBU.LastUpdate = oBU.LastUpdate

                dbEntities.SaveChanges()

                Return True

            Catch ex As Exception

                MsgBox(ex.Message)
                dbEntities.ClearChanges()

                Return False

            End Try

        End Using

    End Function
End Class
